﻿using BCCommon;
using BCCommon.TMS.FreightEnums;
using BCDto.Sim.Admin.Admin;
using BCDto.TMS.HorsemanFreightConfiguration;
using System.Collections.Generic;

namespace BCService.TMS.HorsemanFreightConfiguration
{
    public interface IHorsemanFreightConfigurationService
    {
        /// <summary>
        /// 新增骑手运费配置信息
        /// </summary>
        /// <param name="admin">当前登录员工</param>
        /// <param name="dto">骑手运费配置信息</param>
        /// <returns></returns>
        HorsemanFreightConfigurationDto Add(AdminDto admin, HorsemanFreightConfigurationRequestDto dto);

        /// <summary>
        /// 获取指定的骑手运费配置
        /// </summary>
        /// <param name="horsemanFreightConfigurationId">骑手运费配置Id</param>
        /// <returns></returns>
        HorsemanFreightConfigurationDto GetByHorsemanFreightConfigurationId(long horsemanFreightConfigurationId);

        /// <summary>
        /// 更新骑手运费配置
        /// </summary>
        /// <param name="admin">当前登录人员</param>
        /// <param name="horsemanFreightConfigurationId">骑手运费配置Id</param>
        /// <param name="dto">骑手运费配置信息</param>
        /// <returns></returns>
        HorsemanFreightConfigurationDto Update(AdminDto admin, long horsemanFreightConfigurationId, HorsemanFreightConfigurationRequestDto dto);

        /// <summary>
        /// 根据区县编码获取骑手运费配置
        /// </summary>
        /// <param name="countyCode">区县编码</param>
        /// <returns></returns>
        IEnumerable<HorsemanFreightConfigurationDto> GetByCountyCode(string countyCode);

        /// <summary>
        /// 获取骑手运费配置（分页）
        /// </summary>
        /// <param name="admin">当前登录人员</param> 
        /// <param name="isBase">是否是基础骑手运费配置</param>     
        /// <param name="countyCode">区县编码</param>
        /// <param name="distanceCalculateType">距离计算类型</param>  
        /// <param name="ascending">是否升序排序</param>
        /// <param name="sortName">排序字段</param>
        /// <param name="pageIndex">当前页</param>
        /// <param name="pageSize">每页条数</param>
        PageableList<HorsemanFreightConfigurationViewDto> GetList(AdminDto admin, bool? isBase, string countyCode, DistanceCalculateType? distanceCalculateType, bool? ascending, string sortName, int pageIndex, int pageSize);


    }
}
